package com.ycxy.sh.transaction.controller;


import com.ycxy.sh.transaction.ex.ServiceException;
import com.ycxy.sh.transaction.service.CollectService;
import com.ycxy.sh.transaction.util.KeyUtil;
import com.ycxy.sh.transaction.dao.vo.LayuiPageVo;
import com.ycxy.sh.transaction.web.JsonResult;
import com.ycxy.sh.transaction.dao.entity.Collect;
import com.ycxy.sh.transaction.service.impl.CollectServiceImpl;
import com.ycxy.sh.transaction.util.GetDate;
import com.ycxy.sh.transaction.web.ServiceCode;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * <p>
 *  收藏控制器
 * </p>
 *
 * @author hlt
 * @since 2019-12-21
 */
@Slf4j
@Api(tags = "3.商品详情管理模块")
@Controller
public class CollectController {
    @Autowired
    private CollectService collectService;

    /**
     * 商品详情界面：收藏商品or取消收藏
     * 前端传入收藏操作（colloPerate：1收藏，2取消收藏）,获取session中用户id信息，判断是否登录
     * (1). 收藏商品
     * 1.前端传入商品id（commodityId）、商品名（commodityName）、商品描述（commodityDescribe）、商品用户id（commodityUserId）
     *   商品用户名（commodityUsername）、商品所在地（productLocation）
     * 2.session中获取收藏用户id（collectUserId）
     * 3.进行收藏操作
     * (2). 取消收藏
     * 1.前端传入商品id（commodityId）
     * 2.判断是否本人取消收藏
     * 3.进行取消收藏操作
     */
    @ResponseBody
    @PostMapping("/collect/operate")
    public JsonResult insertCollect(@RequestBody Collect collect, HttpSession session){
        collectService.insertCollect(collect,session);
        log.debug("收藏成功！");
        return JsonResult.ok();
    }

    /**
     * 收藏列表界面取消收藏
     * 1.前端传入收藏id（id）
     * 2.判断是否本人取消收藏
     * 3.进行取消收藏操作
     */
    @ResponseBody
    @PutMapping("/collect/delete/{id}")
    public JsonResult deleteCollect(@PathVariable("id") Long id, HttpSession session){
        collectService.deleteCollect(id,session);
        return JsonResult.ok("取消收藏成功");
    }

    /**
     * 分页查看用户所有收藏内容
     * 前端传入页码、分页数量
     * 查询分页数据
     */
    @ResponseBody
    @GetMapping("/user/collect/queryall")
    public LayuiPageVo pageUserCollect(int limit, int page, HttpSession session) {
        LayuiPageVo layuiPageVo = collectService.pageUserCollect(limit, page, session);
        return layuiPageVo;
    }
}

